import 'package:flutter/material.dart';

import 'package:get/get.dart';
import 'package:getx_learn/app/common/widgets/widgets.dart';
import 'package:getx_learn/app/routes/app_pages.dart';

import '../controllers/obx_demo_controller.dart';

class ObxDemoView extends GetView<ObxDemoController> {
  const ObxDemoView({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: getAppBar(context: context, title: "Obx 使用"),
      body: ListView(
        children: [
          Text("""
           第一种 使用 Rx{Type}
           final name = RxString('');
           final isLogged = RxBool(false);
           final count = RxInt(0);
           final balance = RxDouble(0.0);
           final items = RxList<String>([]);
           final myMap = RxMap<String, int>({});
          
           第二种是使用 Rx，规定泛型 Rx<Type>。
           final name = Rx<String>('');
           final isLogged = Rx<Bool>(false);
           final count = Rx<Int>(0);
           final balance = Rx<Double>(0.0);
           final number = Rx<Num>(0)
           final items = Rx<List<String>>([]);
           final myMap = Rx<Map<String, int>>({});
           自定义类 - 可以是任何类
           final user = Rx<User>();
          
           第三种更实用、更简单、更可取的方法，只需添加 .obs 作为value的属性。
           final name = ''.obs;
           final isLogged = false.obs;
           final count = 0.obs;
           final balance = 0.0.obs;
           final number = 0.obs;
           final items = <String>[].obs;
           final myMap = <String, int>{}.obs;
           自定义类 - 可以是任何类
           final user = User().obs;
          """),
          Divider(),
          ListTile(
            title: Text("第一种方式"),
            subtitle: Text("使用 Rx{Type}的方式，例如：RxInt"),
            onTap: () {
              Get.toNamed(Routes.OBX_FUN1);
            },
          ),

          Divider(),
          ListTile(
            title: Text("第二种方式"),
            subtitle: Text("使用 Rx，规定泛型 Rx<Type>，例如：Rx<Int>(0)"),
            onTap: () {
              Get.toNamed(Routes.OBX_FUN2);
            },
          ),


          Divider(),
          ListTile(
            title: Text("第三种方式"),
            subtitle: Text("更实用、更简单、更可取的方法，只需添加 .obs 作为value的属性。"),
            onTap: () {
              Get.toNamed(Routes.OBX_FUN3);
            },
          ),

        ],
      ),
    );
  }
}
